﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using middleware.dominio;
using middleware.utiles;
using middleware.dominio.negocio;
using middleware.dominio.negocio.exception;

namespace middleware
{
    public partial class VentanaAgregarRegla : Form
    {
        private Regla regla = null;
        private string[] comparaciones = { "=", "<", ">", "<=", ">=", "<>" };

        public VentanaAgregarRegla()
        {
            InitializeComponent();
        }
        
        public VentanaAgregarRegla(Regla regla)
        {
            this.regla = regla;
            InitializeComponent();
        }

        private void AgregarRegla_Load(object sender, EventArgs e)
        {
            try
            {
                //Inicializo las condiciones
                /*cboCondicion.Items.Add("=");
                cboCondicion.Items.Add("<");
                cboCondicion.Items.Add(">");
                cboCondicion.Items.Add("<=");
                cboCondicion.Items.Add(">=");
                cboCondicion.Items.Add("<>");*/
                foreach (String aux in comparaciones)
                    cboCondicion.Items.Add(aux);

                //Inicilizo las bandejas de salida
                List<BandejaSalida> bandejas = BusinessFactory.getMiddleware().ObtenerBandejasSalida();
                foreach (BandejaSalida bs in bandejas)
                    lstBandejas.Items.Add(bs);
                //Controlo si es por modificar, de ser asi precargo los atributos
                if (regla != null)
                {
                    txtNombre.Text = regla.nombreAtributo;
                    cboCondicion.SelectedItem = regla.codicion;
                    txtValor.Text = regla.valorAtributo;
                    lstBandejas.SelectedItem = regla.bandeja;
                }
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstBandejas.SelectedItem == null)
                {
                    MessageBox.Show("Seleccione una bandeja de salida");
                }
                else
                {
                    bool resultado = false;
                    BandejaSalida bsSeleccionada = (BandejaSalida)lstBandejas.SelectedItem;
                    string condicion = cboCondicion.SelectedItem.ToString();
                    //Controlo si es modificar o agregar
                    if (regla == null)
                        resultado = BusinessFactory.getMiddleware().CrearRegla(txtNombre.Text, condicion, txtValor.Text, bsSeleccionada) != null;
                    else
                        resultado = BusinessFactory.getMiddleware().ModificarRegla(regla, txtNombre.Text, condicion, txtValor.Text, bsSeleccionada);

                    if (resultado)
                        this.Close();
                    else
                        MessageBox.Show("Hay datos incorrectos.");
                }
            }
            catch (BusinessException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
